package com.example.demo.exception;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
 * 自定义权限拒绝异常
 * 当用户尝试执行没有权限的操作时抛出
 */
@ResponseStatus(value = HttpStatus.FORBIDDEN)
public class AccessDeniedException extends RuntimeException {

    /**
     * 使用默认错误消息构造异常
     */
    public AccessDeniedException() {
        super("Access Denied: You don't have permission to perform this action");
    }

    /**
     * 使用自定义错误消息构造异常
     * @param message 自定义错误消息
     */
    public AccessDeniedException(String message) {
        super(message);
    }

    /**
     * 使用自定义错误消息和原因构造异常
     * @param message 自定义错误消息
     * @param cause 原始异常
     */
    public AccessDeniedException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 使用原因构造异常
     * @param cause 原始异常
     */
    public AccessDeniedException(Throwable cause) {
        super(cause);
    }
}